package com.flyan.game.motafx.core.map.info;

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import lombok.Data;

import java.util.List;

/**
 * 楼层信息
 *
 * @author flyan
 * @version 1.0
 * @email flyan_by_chenu@sina.com
 * @since 2025/2/8
 */
@Data
public class FloorInfo {

    /**
     * 楼层号
     */
    private Integer number;

    /**
     * 楼层名称
     */
    private String name;

    /**
     * 地图信息，有多个图层信息
     */
    private List<List<List<Integer>>> map;

    /**
     * 实体配置信息
     */
    private List<EntityProperty> entityProperties;

    /**
     * 事件监听器配置信息
     */
    private JSONArray eventListeners;

    /**
     * 查询实体属性
     *
     * @param position 实体位置
     * @return 属性
     */
    public EntityProperty getEntityProperty(EntityProperty.EntityPosition position) {
        if (entityProperties == null) {
            return null;
        }

        return entityProperties.stream()
                .filter(it -> it.getPosition().equals(position))
                .findFirst()
                .orElse(null);
    }

    /**
     * 查询实体信息
     *
     * @param position 实体位置
     * @return 信息
     */
    public JSONObject getEntityInfo(EntityProperty.EntityPosition position) {
        EntityProperty prop = getEntityProperty(position);
        if (prop == null) {
            return new JSONObject();
        }

        return prop.getInfo();
    }

}
